package core

import (
	"github.com/sirupsen/logrus"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"time"
	"wecom_rebot/common"
)

func InitGorm() *gorm.DB {
	mysqlLogger := InitLogger(common.LogsErrorMap[2])
	if common.Config.Mysql.Host == "" {
		common.Log.Warnln("未配置mysql连接地址，取消gorm连接")
		return nil
	}

	dsn := common.Config.Mysql.Dsn()

	// 创建 GORM 的日志记录器，绑定到 mysqlLogger
	gormLogger := logger.New(
		logrus.NewEntry(mysqlLogger), // 使用 mysqlLogger 的 Entry
		logger.Config{
			SlowThreshold:             time.Second,
			LogLevel:                  logger.Info, // 根据环境调整
			IgnoreRecordNotFoundError: true,
			Colorful:                  false,
		},
	)

	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		Logger: gormLogger, // 绑定到场景日志实例
	})
	if err != nil {
		mysqlLogger.Fatalf("[%s] mysql 连接失败", err)
	}

	mysqlLogger.Info("mysql 启动成功")

	sqlDb, _ := db.DB()
	sqlDb.SetMaxIdleConns(10)
	sqlDb.SetMaxOpenConns(100)
	sqlDb.SetConnMaxLifetime(time.Hour * 5)
	return db
}
